package com.yl.service.impl;


import com.yl.common.core.utils.DateUtils;
import com.yl.danmo.domain.*;
import com.yl.mapper.DanmoInformationBarMapper;
import com.yl.mapper.DanmoInformationGuoMapper;
import com.yl.service.IDanmoInformationGuoService;
import io.lettuce.core.output.ListOfGenericMapsOutput;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 会员信息 国家级Service业务层处理
 * 
 * @author yangle
 * @date 2025-03-10
 */
@Service
public class DanmoInformationGuoServiceImpl implements IDanmoInformationGuoService
{
    @Autowired
    private DanmoInformationGuoMapper danmoInformationGuoMapper;

    /**
     * 查询会员信息 国家级
     * 
     * @param id 会员信息 国家级主键
     * @return 会员信息 国家级
     */
    @Override
    public DanmoInformationGuo selectDanmoInformationGuoById(Long id)
    {
        return danmoInformationGuoMapper.selectDanmoInformationGuoById(id);
    }

    /**
     * 查询会员信息 国家级列表
     * 
     * @param danmoInformationGuo 会员信息 国家级
     * @return 会员信息 国家级
     */
    @Override
    public List<DanmoInformationGuo> selectDanmoInformationGuoList(DanmoInformationGuo danmoInformationGuo)
    {
        return danmoInformationGuoMapper.selectDanmoInformationGuoList(danmoInformationGuo);
    }

    /**
     * 新增会员信息 国家级
     * 
     * @param danmoInformationGuo 会员信息 国家级
     * @return 结果
     */
    @Override
    public int insertDanmoInformationGuo(DanmoInformationGuo danmoInformationGuo)
    {
        danmoInformationGuo.setCreateTime(DateUtils.getNowDate());
        return danmoInformationGuoMapper.insertDanmoInformationGuo(danmoInformationGuo);
    }

    /**
     * 修改会员信息 国家级
     * 
     * @param danmoInformationGuo 会员信息 国家级
     * @return 结果
     */
    @Override
    public int updateDanmoInformationGuo(DanmoInformationGuo danmoInformationGuo)
    {
        danmoInformationGuo.setUpdateTime(DateUtils.getNowDate());
        return danmoInformationGuoMapper.updateDanmoInformationGuo(danmoInformationGuo);
    }

    /**
     * 批量删除会员信息 国家级
     * 
     * @param ids 需要删除的会员信息 国家级主键
     * @return 结果
     */
    @Override
    public int deleteDanmoInformationGuoByIds(Long[] ids)
    {
        return danmoInformationGuoMapper.deleteDanmoInformationGuoByIds(ids);
    }

    /**
     * 删除会员信息 国家级信息
     * 
     * @param id 会员信息 国家级主键
     * @return 结果
     */
    @Override
    public int deleteDanmoInformationGuoById(Long id)
    {
        return danmoInformationGuoMapper.deleteDanmoInformationGuoById(id);
    }
    @Autowired
    private DanmoInformationBarMapper danmoInformationBarMapper;
    @Override
    public List<DanmoInformationGuo> select(DanmoInformationGuo danmoInformationGuo) {
        // 1. 查询所有数据
        List<DanmoInformationGuo> list = danmoInformationGuoMapper.select22(danmoInformationGuo);

// 2. 重新赋值 ID 从 1 开始
        int newId = 3000001;
        for (DanmoInformationGuo item : list) {
            // 保存原来的 ID 和数据
            item.setOriginalId(item.getId()); // 假设你新增了 originalId 字段来保存原始 ID
            item.setId(Long.valueOf(newId)); // 新的 ID（临时用于更新）
            danmoInformationGuoMapper.updateByPrimaryKey(item);
//            map;map_title;bar;photos;calligrapher_position;content;
            //个人简介
            List<DanmoInformationBar> danmoInformationBars = danmoInformationBarMapper.selectList(item.getOriginalId());

            for (DanmoInformationBar bar : danmoInformationBars) {
                if (bar.getChineseName()!=null && bar.getChineseName().equals(item.getName()) &&bar.getInformationId()!=null && bar.getInformationId().equals( item.getOriginalId())){
                    {
                        danmoInformationGuoMapper.updateBar(item);
                    }
                }
            }

            //相关星图
            List<DanmoInformationMap> ts = danmoInformationGuoMapper.selectMap(item.getOriginalId());
            for (int i = 0; i < ts.size(); i++) {
                danmoInformationGuoMapper.updateMap(item);
            }
            //相关星图标题
            List<DanmoInformationMapTitle> mapTitles = danmoInformationGuoMapper.selectMapTitle(item.getOriginalId());
            for (int i = 0; i < mapTitles.size(); i++) {
                danmoInformationGuoMapper.updateMapTitle(item);
            }
//            danmoInformationGuoMapper.updateMapTitle(item);
            //个人图片
            List<DanmoInformationPhotos> photos = danmoInformationGuoMapper.selectPhotos(item.getOriginalId());
            for (int i = 0; i < photos.size(); i++) {
                danmoInformationGuoMapper.updatePhotos(item);
            }
//            danmoInformationGuoMapper.updatePhotos(item);
            //个人职位
            List<DanmoInformationPositions> calligrapherPositions = danmoInformationGuoMapper.selectCalligrapherPosition(item.getOriginalId());
            for (int i = 0; i < calligrapherPositions.size(); i++) {
                danmoInformationGuoMapper.updateCalligrapherPosition(item);
            }
//            danmoInformationGuoMapper.updateCalligrapherPosition(item);
            //个人简介
            List<DanmoInformationContent> contents = danmoInformationGuoMapper.selectContent(item.getOriginalId());
            for (int i = 0; i < contents.size(); i++) {
                danmoInformationGuoMapper.updateContent(item);
            }
//            danmoInformationGuoMapper.updateContent(item);
            System.out.println("第"+newId+"条数据");
            newId++;

        }



        return list;
    }
//省
    @Override
    public List<DanmoInformationGuo> select1(DanmoInformationGuo danmoInformationGuo) {
        List<DanmoInformationGuo> list = danmoInformationGuoMapper.select11(danmoInformationGuo);

// 2. 重新赋值 ID 从 1 开始
        int newId = 10000001;
        for (DanmoInformationGuo item : list) {
            // 保存原来的 ID 和数据
            item.setOriginalId(item.getId()); // 假设你新增了 originalId 字段来保存原始 ID
            item.setId(Long.valueOf(newId)); // 新的 ID（临时用于更新）
            danmoInformationGuoMapper.updateByPrimaryKey(item);
//            map;map_title;bar;photos;calligrapher_position;content;
            System.out.println("第"+newId+"条数据");
            newId++;

        }
            return list;
    }
//市
    @Override
    public List<DanmoInformationGuo> select2(DanmoInformationGuo danmoInformationGuo) {
        List<DanmoInformationGuo> list = danmoInformationGuoMapper.select22(danmoInformationGuo);

// 2. 重新赋值 ID 从 1 开始
        int newId = 2000001;
        for (DanmoInformationGuo item : list) {
            // 保存原来的 ID 和数据
            item.setOriginalId(item.getId()); // 假设你新增了 originalId 字段来保存原始 ID
            item.setId(Long.valueOf(newId)); // 新的 ID（临时用于更新）
            danmoInformationGuoMapper.updateByPrimaryKey1(item);
//            map;map_title;bar;photos;calligrapher_position;content;
            System.out.println("第"+newId+"条数据");
            newId++;
        }
        return list;
    }

    @Override
    public List<DanmoInformationGuo> selectShi(DanmoInformationGuo danmoInformationGuo) {
        // 1. 查询所有数据
        List<DanmoInformationGuo> list = danmoInformationGuoMapper.select3(danmoInformationGuo);

// 2. 重新赋值 ID 从 1 开始
        int newId = 2000001;
        for (DanmoInformationGuo item : list) {
            // 保存原来的 ID 和数据
            item.setOriginalId(item.getId()); // 假设你新增了 originalId 字段来保存原始 ID
            item.setId(Long.valueOf(newId)); // 新的 ID（临时用于更新）
            danmoInformationGuoMapper.updateByPrimaryKey3(item);
//            map;map_title;bar;photos;calligrapher_position;content;
            //个人简介
            List<DanmoInformationBar> danmoInformationBars = danmoInformationBarMapper.selectList(item.getOriginalId());

            for (DanmoInformationBar bar : danmoInformationBars) {
                if (bar.getChineseName()!=null && bar.getChineseName().equals(item.getName()) &&bar.getInformationId()!=null && bar.getInformationId().equals( item.getOriginalId())){
                    {
                        danmoInformationGuoMapper.updateBar(item);
                    }
                }
            }

            //相关星图
            List<DanmoInformationMap> ts = danmoInformationGuoMapper.selectMap(item.getOriginalId());
            for (int i = 0; i < ts.size(); i++) {
                danmoInformationGuoMapper.updateMap(item);
            }
            //相关星图标题
            List<DanmoInformationMapTitle> mapTitles = danmoInformationGuoMapper.selectMapTitle(item.getOriginalId());
            for (int i = 0; i < mapTitles.size(); i++) {
                danmoInformationGuoMapper.updateMapTitle(item);
            }
//            danmoInformationGuoMapper.updateMapTitle(item);
            //个人图片
            List<DanmoInformationPhotos> photos = danmoInformationGuoMapper.selectPhotos(item.getOriginalId());
            for (int i = 0; i < photos.size(); i++) {
                danmoInformationGuoMapper.updatePhotos(item);
            }
//            danmoInformationGuoMapper.updatePhotos(item);
            //个人职位
            List<DanmoInformationPositions> calligrapherPositions = danmoInformationGuoMapper.selectCalligrapherPosition(item.getOriginalId());
            for (int i = 0; i < calligrapherPositions.size(); i++) {
                danmoInformationGuoMapper.updateCalligrapherPosition(item);
            }
//            danmoInformationGuoMapper.updateCalligrapherPosition(item);
            //个人简介
            List<DanmoInformationContent> contents = danmoInformationGuoMapper.selectContent(item.getOriginalId());
            for (int i = 0; i < contents.size(); i++) {
                danmoInformationGuoMapper.updateContent(item);
            }
//            danmoInformationGuoMapper.updateContent(item);
            System.out.println("第"+newId+"条数据");
            newId++;

        }



        return list;
    }
//        // 查询所有数据
//        List<DanmoInformationGuo> list = danmoInformationGuoMapper.select(danmoInformationGuo);
//        // 重新分配 ID 并更新关联数据
//        reassignIdsAndUpdateRelatedData(list);
//        return list;
//    }
//
//    private void reassignIdsAndUpdateRelatedData(List<DanmoInformationGuo> list) {
//        int newId = 1;
//        for (DanmoInformationGuo item : list) {
//            // 保存原来的 ID
//            item.setOriginalId(item.getId());
//            // 分配新的 ID
//            item.setId((long) newId);
//            // 更新主表记录
//            danmoInformationGuoMapper.updateByPrimaryKey(item);
//
//            // 处理关联表数据
//            processRelatedData(item, danmoInformationBarMapper.selectList(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateBar(item),
//                    bar -> bar.getChineseName() != null && bar.getChineseName().equals(item.getName())
//                            && bar.getInformationId() != null && bar.getInformationId().equals(item.getOriginalId()));
//
//            processRelatedData(item, danmoInformationGuoMapper.selectMap(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateMap(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectMapTitle(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateMapTitle(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectPhotos(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updatePhotos(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectCalligrapherPosition(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateCalligrapherPosition(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectContent(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateContent(item),
//                    data -> true);
//            System.out.println("第"+newId+"条数据");
//            newId++;
//        }
//    }
//
//    private <T> void processRelatedData(DanmoInformationGuo item, List<T> relatedDataList, Runnable updateAction, java.util.function.Predicate<T> condition) {
//        if (relatedDataList != null) {
//            int size = relatedDataList.size();
//            for (int i = 0; i < size; i++) {
//                T relatedData = relatedDataList.get(i);
//                if (condition.test(relatedData)) {
//                    updateAction.run();
//                }
//            }
//        }
//    }
//
//    @Override
//    @Transactional
//    public List<DanmoInformationGuo> select1(DanmoInformationGuo danmoInformationGuo) {
//        // 查询所有数据
//        List<DanmoInformationGuo> list = danmoInformationGuoMapper.select11(danmoInformationGuo);
//        // 重新分配 ID 并更新关联数据
//        reassignIdsAndUpdateRelatedData11(list);
//        return list;
//    }
//
//    private void reassignIdsAndUpdateRelatedData11(List<DanmoInformationGuo> list) {
//        int newId = 6000001;
//        for (DanmoInformationGuo item : list) {
//            // 保存原来的 ID
//            item.setOriginalId(item.getId());
//            // 分配新的 ID
//            item.setId((long) newId);
//            // 更新主表记录
//            danmoInformationGuoMapper.updateByPrimaryKey(item);
//
//            // 处理关联表数据
//            processRelatedData(item, danmoInformationBarMapper.selectList(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateBar(item),
//                    bar -> bar.getChineseName() != null && bar.getChineseName().equals(item.getName())
//                            && bar.getInformationId() != null && bar.getInformationId().equals(item.getOriginalId()));
//
//            processRelatedData(item, danmoInformationGuoMapper.selectMap(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateMap(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectMapTitle(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateMapTitle(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectPhotos(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updatePhotos(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectCalligrapherPosition(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateCalligrapherPosition(item),
//                    data -> true);
//
//            processRelatedData(item, danmoInformationGuoMapper.selectContent(item.getOriginalId()),
//                    () -> danmoInformationGuoMapper.updateContent(item),
//                    data -> true);
//
//            newId++;
//        }
//
//    }
}
